package jdbc;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
import java.util.Scanner;

/**
 * Statement对象
 */
@SuppressWarnings({"all"})
public class Statement_ {

    public static void main(String[] args) throws Exception {
        /*
            Statement对象 用于执行静态SQL语句并返回其生成的结果的对象
            在连接建立后，需要对数据库进行访问，执行命令或sql语句
            可以通过:
            1.Statement (存在sql注入问题)
            2.PreparedStatement (预处理)
            3.CallableStatement (存储过程)

            sql注入：利用某些系统没有对用户输入的数据进行充分的检查，而在用户
            输入数据中注入非法的 sql语句段或命令，恶意攻击数据库。
         */
        Scanner scanner = new Scanner(System.in);

        //让用户输入管理员名和密码
        System.out.println("请输入管理员名字：");
        //如果希望看到sql注入，使用nextLine()方法碰到回车才结束
        //而next()方法碰到空格就结束
        String admin_name = scanner.nextLine();
        System.out.println("请输入管理员密码：");
        String admin_password = scanner.nextLine();


        //通过Properties 对象获取配置文件的信息
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql3.properties"));
        //获取相关值
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
//        String driver = properties.getProperty("driver");
        String url = properties.getProperty("url");
        Connection connection = DriverManager.getConnection(url, user, password);

        Statement statement = connection.createStatement();
        String sql = "select name, pwd from admin where name = '" + admin_name + "' and pwd = '" + admin_password + "'";
        ResultSet resultSet = statement.executeQuery(sql);
        if (resultSet.next()) { //如果查询到一条记录，则说明该管理存在
            System.out.println("登录成功！");
        } else {
            System.out.println("登录失败...");
        }
        //关闭连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}
